//ybzuo
//2010.03
//UI Compote base Imp
#pragma once
#include "i_UIcompote.h"
#include <list>
#include <map>
class i_UIcompte_imp :public i_UIcompote
{
	public:
		//add element;
		virtual bool add_element(std::string _name,i_UIelement* _element);
		//remove element
		virtual bool remove_element(std::string _name);
		//add effect
		virtual bool add_effect(i_UIeffect* _effect);
		//render
		virtual void render()=0;
		//update
		virtual void update()=0;
		//if active
		virtual bool active(){return m_active;}
		//construct/decon
		i_UIcompte_imp();
		~i_UIcompte_imp();


	protected:
		bool m_active;
		//effect list
		typedef std::list<i_UIeffect*> EffectColl;
		typedef std::list<i_UIeffect*>::iterator EffectCollIt;
		EffectColl m_effects;
		//uiElement map
		typedef std::map<std::string,i_UIelement*> ElementColl;
		typedef std::map<std::string,i_UIelement*>::iterator ElementCollIt;
		ElementColl m_elements;


		

};